package com.hundsun.s3.mrs.core.handler;

import com.hundsun.s3.mrs.core.IParamsIn;
import com.hundsun.s3.mrs.core.IParamsOut;
import com.hundsun.s3.mrs.core.chain.ChainManager;
import com.hundsun.s3.mrs.core.chain.IChain;
import com.hundsun.s3.mrs.core.message.Message;
import com.hundsun.s3.mrs.core.task.DefTask;
import com.hundsun.s3.mrs.core.task.Task;
import com.hundsun.s3.mrs.core.type.MessageType;
import com.hundsun.s3.mrs.core.type.TaskType;

/**
 * 发送任务的处理器
 * @author chenji23607
 *
 */
public class SendTaskHandler implements IHandler {

	@Override
	public void doHandle(IParamsIn in, IParamsOut out, IChain chain) {
		if(!(in instanceof Task)) {
			throw new RuntimeException("当前任务链的入参不是一个任务类型");
		}
		if(in instanceof DefTask) {
			// 如果是系统提供的默认任务类
			DefTask task = (DefTask) in;
			Message message = task.getMessage();
			if(!message.getTaskType().equals(TaskType.TASK_SEND)) {
				chain.doHandle(in, out, chain);
			}
			if(message.getMessageType().equals(MessageType.TYPE_TEXT)) {
				// 重置Task链
				chain.setIndex(0);
				IChain sequela = ChainManager.getChain("typeChain");
				//交给后续的Type链处理
				sequela.doHandle(in, null, sequela);
			} else {
				// 任务类别的链条在这里中断或者继续
				chain.doHandle(in, null, chain);
			}
		}
	}
	
}
